Analysis date: 2023-02-07
CRC_Xenografts_FirstBatch_DataProcessing Script
#set.seed(2022)
load("../Data/Cache/Xenografts_Batch1_2_DataProcessing.RData")
source("../../../General/Code/Analysis_Functions.R")
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::collapse() masks IRanges::collapse()
## ✖ dplyr::combine() masks Biobase::combine(), BiocGenerics::combine()
## ✖ dplyr::count() masks matrixStats::count()
## ✖ dplyr::desc() masks IRanges::desc()
## ✖ tidyr::expand() masks S4Vectors::expand()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first() masks S4Vectors::first()
## ✖ dplyr::lag() masks stats::lag()
## ✖ purrr::map() masks kohonen::map()
## ✖ ggplot2::Position() masks BiocGenerics::Position(), base::Position()
## ✖ purrr::reduce() masks GenomicRanges::reduce(), IRanges::reduce()
## ✖ dplyr::rename() masks S4Vectors::rename()
## ✖ dplyr::select() masks AnnotationDbi::select()
## ✖ dplyr::slice() masks IRanges::slice()
source("CRC_Xenografts_Batch1_Functions.R")
Train_SOM <- function(phos_mat, try.k){
## define a grid for the SOM and train
grid.size <- ceiling(nrow(phos_mat ) ^ (1/2.5))
som.grid <- somgrid(xdim = grid.size, ydim = grid.size, topo = 'hexagonal', toroidal = T)
som.model <- som(data.matrix(phos_mat ), grid = som.grid)
## extract some data to make it easier to use
som.events <- som.model$codes[[1]]
#som.events.colors <- rgb(som.events[,1], som.events[,2], som.events[,3], maxColorValue = 255)
som.dist <- as.matrix(dist(som.events))
plot(som.model, type = 'mapping', cex=0.2)
plot(som.model, type="changes")
plot(som.model, type = 'count')
plot(som.model, type="dist.neighbours")
# plot(som.model, type="codes")
# dev.off()
#plot(som.model, type = "property", property = som.model$codes[,4], main=names(som.model$data)[4]#, palette.name=coolBlueHotRed
#try.k <- 2:100
cluster.dist.eval <- as.data.frame(matrix(ncol = 3, nrow = (length(try.k))))
colnames(cluster.dist.eval) <- c('k', 'kmeans', 'hclust')
for(i in 1:length(try.k)) {
cluster.dist.eval[i, 'k'] <- try.k[i]
cluster.dist.eval[i, 'kmeans'] <- Cluster_Mean_Dist(kmeans(som.events, centers = try.k[i], iter.max = 20)$cluster, som.dist = som.dist)
cluster.dist.eval[i, 'hclust'] <- Cluster_Mean_Dist(cutree(hclust(vegan::vegdist(som.events)), k = try.k[i]), som.dist = som.dist)
}
plot(cluster.dist.eval[, 'kmeans'] ~ try.k,
type = 'l')
lines(cluster.dist.eval[, 'hclust'] ~ try.k,
col = 'red')
legend('topright',
legend = c('k-means', 'hierarchical'),
col = c('black', 'red'),
lty = c(1, 1))
return(list( som.model, som.events ))
}
## Define a function to calculate mean distance within each cluster. This
## is roughly analogous to the within clusters ss approach
Cluster_Mean_Dist <- function(clusters, som.dist){
cluster.means = c()
for(c in unique(clusters)){
temp.members <- which(clusters == c)
if(length(temp.members) > 1){
temp.dist <- som.dist[temp.members,]
temp.dist <- temp.dist[,temp.members]
cluster.means <- append(cluster.means, mean(temp.dist))
}else(cluster.means <- 0)
}
return(mean(cluster.means))
}
Plot_Colored_SOM <- function(som.model, clusters, type = "mapping", cl = 40){
plot(som.model,
type = type,
pchs = 21,
cex=0.2,
col = "black",
#bg = c("blue" , "red", "yellow", "green")[as.factor(str_remove(str_split( rownames(som.model$data[[1]]), "-", simplify = T )[,1], "log2FC_")) ] ,
keepMargins = F,
bgcol = c(RColorBrewer::brewer.pal(12, "Set3"), RColorBrewer::brewer.pal(9, "Set1"), RColorBrewer::brewer.pal(8, "Set2"), RColorBrewer::brewer.pal(9, "Pastel1"), RColorBrewer::brewer.pal(8, "Dark2"))[clusters] )
add.cluster.boundaries(som.model, clusters)
}
Asign_To_Clusters <- function(som.model, clusters){
cluster_classification <- som.model$unit.classif
names(cluster_classification) <- rownames(som.model$data[[1]])
classification <- clusters[cluster_classification]
names(classification) <- rownames(som.model$data[[1]])
classification
}
Get_Members_Of_One_Cluster <- function(som.model, clusters, n){
message(paste("Cluster" , n ))
asign <- Asign_To_Clusters(som.model, clusters)
names(asign[asign == n])
}
Get_Mat_With_Assigned_Clusters <- function(som.model, clusters, phos_mat ){
som.cluster.asignedclusters <- Asign_To_Clusters(som.model = som.model,
clusters = clusters)
phos_mat_t <- as.data.frame( t(phos_mat) )
phos_mat_t$cluster <- som.cluster.asignedclusters[rownames(phos_mat_t)]
phos_mat_t <- phos_mat_t %>%
rownames_to_column( "peptide") %>%
pivot_longer(-c(peptide, cluster), names_to = "sample", values_to = "log2FC") %>%
mutate(sample = gsub( "log2FC_", "", sample)) %>%
separate( sample , into = c("xenograft", "treatment", "day", "replicate", "set"), sep = "_", remove = F) %>%
separate(peptide, into = c("HGNC_Symbol", "Annotated_Sequence"), sep = "_", remove = F ) %>%
mutate(treatment = as.factor(treatment))
return(phos_mat_t)
}
Plot_Profiles_SOM_clusters <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
phos_mat_t <- phos_mat_t
mean_per_type <-
phos_mat_t %>%
group_by(sample, treatment) %>%
summarise(log2FC= median(log2FC)) %>%
ungroup() %>%
group_by(treatment) %>%
summarise(mean_log2FC = mean(log2FC)) %>%
ungroup() %>%
column_to_rownames("treatment") %>%
t %>% as_tibble()
if(specific_cluster){
phos_mat_t <- phos_mat_t %>%
filter(cluster==specific_cluster)
}
phos_mat_t %>%
filter(!is.na(cluster)) %>%
mutate(treatment = as.factor(treatment)) %>%
mutate(treatment = factor(treatment, levels = c("ctrl", "E", "EC", "EBC"))) %>%
#filter(cluster==19) %>%
ggplot(aes( sample, log2FC, fill = treatment, group = peptide )) +
geom_line(alpha = 0.3) +
theme_bw() +
theme(axis.text.x = element_text(angle = 90),
axis.title.x = element_blank()) +
scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
facet_wrap(~cluster, ncol = ncol_grid) +
geom_hline(col = PGPalette[5], yintercept = mean_per_type$ctrl) +
geom_hline(col = PGPalette[1], yintercept = mean_per_type$E) +
geom_hline(col = PGPalette[2], yintercept = mean_per_type$EC) +
geom_hline(col = PGPalette[4], yintercept = mean_per_type$EBC) +
geom_point(alpha = 0.3, aes(col = treatment), size = 0.4)
}
Plot_Profiles_SOM_Clusters_Splitbyday <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
phos_mat_t <- phos_mat_t
if(specific_cluster){
phos_mat_t <- phos_mat_t %>%
filter(cluster==specific_cluster)
}
phos_mat_t %>%
filter(!is.na(cluster)) %>%
#filter(cluster==19) %>%
mutate(prep = unlist(prep_l[sample]),
treatment = as.factor(treatment) ) %>%
mutate(treatment = factor(treatment, levels = c("ctrl", "E", "EC", "EBC"))) %>%
group_by(treatment, day, sample, cluster) %>%
summarise(log2FC= mean(log2FC)) %>%
ungroup() %>%
ggplot(aes( treatment, log2FC, fill = treatment )) +
geom_boxplot(outlier.size = 0) +
theme_bw() +
scale_fill_manual(values = PGPalette[c(5,1,2,4)]) +
facet_wrap(~cluster+day) +
ggpubr::stat_compare_means() +
ggbeeswarm::geom_beeswarm()
}
Plot_Profiles_SOM_clusters_day <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
phos_mat_t <- phos_mat_t
if(specific_cluster){
phos_mat_t <- phos_mat_t %>%
filter(cluster==specific_cluster)
}
phos_mat_t %>%
filter(!is.na(cluster)) %>%
#filter(cluster==19) %>%
mutate(prep = unlist(prep_l[sample]) ) %>%
ggplot(aes( sample, log2FC, fill = day, group = peptide )) +
geom_line(alpha = 0.3) +
theme_bw() +
theme(axis.text.x = element_text(angle = 90),
axis.title.x = element_blank()) +
scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
facet_wrap(~cluster, ncol = ncol_grid) +
geom_point(alpha = 0.3, aes(col = day), size = 0.4)
}
Plot_Profiles_SOM_clusters_day_sorted_by_day <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
phos_mat_t <- phos_mat_t
if(specific_cluster){
phos_mat_t <- phos_mat_t %>%
filter(cluster==specific_cluster)
}
phos_mat_t <- phos_mat_t %>%
filter(!is.na(cluster)) %>%
#filter(cluster==19) %>%
mutate(prep = unlist(prep_l[sample]) )
order_prep <- phos_mat_t %>%
arrange( day, treatment, prep ) %>%
.$sample
phos_mat_t %>%
mutate(sample = as.factor(sample)) %>%
mutate(sample = factor(sample, levels = unique(order_prep)) ) %>%
ggplot(aes( sample, log2FC, fill = day, group = peptide )) +
geom_line(alpha = 0.3) +
theme_bw() +
theme(axis.text.x = element_text(angle = 90),
axis.title.x = element_blank()) +
scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
facet_wrap(~cluster, ncol = ncol_grid) +
geom_point(alpha = 0.3, aes(col = day), size = 0.4)
}
Confusion_Matrix <- function(cluster){
as.data.frame(Asign_To_Clusters(som.model.pat, cluster) ) %>%
rownames_to_column("sample") %>%
separate(sample, sep = "_", into = c("log2FC", "xenograft", "treatment", "day", "replicate", "set" ) ) %>%
select(-day, -set, -xenograft, -log2FC, -replicate) %>%
table
}
Confusion_Matrix_Prep <- function(cluster){
as.data.frame(Asign_To_Clusters(som.model.pat, cluster) ) %>%
rownames_to_column("sample") %>%
mutate(prep = unlist( prep_l[ gsub("log2FC_", "", sample)]) ) %>%
separate(sample, sep = "_", into = c("log2FC", "xenograft", "treatment", "day", "replicate", "set" ) ) %>%
select(-day, -set, -xenograft, -log2FC, -replicate, -treatment) %>%
table
}
Plot_StringDB <- function(hits){
hits <- as.data.frame(hits)
colnames(hits) <- "HGNC_Symbol"
hits_mapped <- string_db$map( hits, "HGNC_Symbol", removeUnmappedRows = TRUE )
string_db$plot_network( hits_mapped)
}
som.pept.pY <- Train_SOM(phos_mat= t(pY_mat_Set2), try.k = 2:40)
som.model.pept.pY <- som.pept.pY[[1]]
som.events.pept.pY <- som.pept.pY[[2]]
## Having selected a reasonable value for k, evaluate different clustering algorithms.
## Try several different clustering algorithms, and, if desired, different values for k
cluster.tries.pept.pY <- list()
for(k in c(3,4,5, 10, 15, 25)){
## k-means clustering
som.cluster.k <- kmeans(som.events.pept.pY, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
## hierarchical clustering
som.dist.pept <- dist(som.events.pept.pY) # hierarchical, step 1
som.cluster.h <- cutree(hclust(som.dist.pept), k = k) # hierarchical, step 2
## capture outputs
cluster.tries.pept.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
cluster.tries.pept.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}
## Take a look at the various clusters. You're looking for the algorithm that produces the
## least fragmented clusters.
message("k10")
## k10
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.k.10, cl = 25)
message("k15")
## k15
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.k.15, cl = 25)
message("k29")
## k29
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.k.25, cl = 25)
#cluster.tries.pept.pY$som.cluster.k.20
message("Members in each cluster (k15):")
## Members in each cluster (k15):
sort(table(Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.15)))
##
## 11 4 9 12 15 8 7 13 6 2 10 3 14 5 1
## 16 21 21 24 24 25 36 38 43 54 54 57 65 70 79
message("Members in each cluster (k29):")
## Members in each cluster (k29):
sort(table(Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.25)))
##
## 14 2 22 5 20 25 1 3 9 23 13 4 11 8 6 24 19 12 16 17 10 21 15 18 7
## 4 7 8 9 9 9 10 12 13 13 14 16 19 21 22 22 28 32 40 41 45 45 54 66 68
message("h3")
## h3
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.h.3, cl = 5)
message("h4")
## h4
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.h.4, cl = 5)
message("h5")
## h5
Plot_Colored_SOM(som.model.pept.pY,
cluster.tries.pept.pY$som.cluster.h.5, cl = 5)
t(pY_mat_Set2) %>%
as.data.frame( ) %>%
rownames_to_column( "peptide") %>%
pivot_longer(-peptide, names_to = "sample", values_to = "log2FC") %>%
mutate(sample = gsub( "log2FC_", "", sample)) %>%
separate( sample , into = c("xenograft", "treatment", "day", "replicate", "set"), sep = "_", remove = F) %>%
separate(peptide, into = c("HGNC_Symbol", "Annotated_Sequence"), sep = "_", remove = F ) %>%
group_by(sample, treatment, day, set, replicate) %>%
summarise("Mean of cluster" = mean(log2FC)) %>%
ungroup() %>%
mutate(treatment = as.factor(treatment)) %>%
ggplot(aes( treatment, `Mean of cluster`, fill = treatment )) +
geom_boxplot(outlier.size = 0) +
theme_bw() +
theme(axis.text.x = element_text(angle = 90),
axis.title.x = element_blank()) +
scale_fill_manual(values = PGPalette[c(5,1,2,4)]) +
ggbeeswarm::geom_beeswarm() +
ggpubr::stat_compare_means()
## `summarise()` has grouped output by 'sample', 'treatment', 'day', 'set'. You
## can override using the `.groups` argument.
Plot_Profiles_SOM_clusters(som.model = som.model.pept.pY,
clusters = cluster.tries.pept.pY$som.cluster.k.15,
phos_mat = pY_mat_Set2)
## `summarise()` has grouped output by 'sample'. You can override using the
## `.groups` argument.
Plot_Profiles_SOM_Clusters_Splitbyday(som.model = som.model.pept.pY,
clusters = cluster.tries.pept.pY$som.cluster.k.15,
phos_mat = pY_mat_Set2)
## `summarise()` has grouped output by 'treatment', 'day', 'sample'. You can
## override using the `.groups` argument.
Plot_Profiles_SOM_Clusters_Splitbyday(som.model = som.model.pept.pY,
clusters = cluster.tries.pept.pY$som.cluster.k.15,
phos_mat = pY_mat_Set2,
specific_cluster = 9)
## `summarise()` has grouped output by 'treatment', 'day', 'sample'. You can
## override using the `.groups` argument.
k15cl_pY <- Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.15)
k15cl_pY[k15cl_pY == 9]
## PLCG1_ACyRDMSSFPETK NCOA4_ANEPCTsFAECVCDENCEKEALyK
## 9 9
## GRB2_DIEQVPQQPTyVQALFDFDPQEDGELGFR RET_DVyEEDSYVK
## 9 9
## RET_DVyEEDsYVKR RET_DVyEEDSYVKR
## 9 9
## RIN1_EKPAQDPLyDVPNASGGQAGGPQRPGR SHC1_ELFDDPSyVNVQNLDK
## 9 9
## JAK2_EVGDyGQLHETEVLLK PIK3R2_EYDQLYEEyTR
## 9 9
## PGAM1_FSGWyDADLSPAGHEEAK PGAM1_FSGWyDADLSPAGHEEAKR
## 9 9
## MAPK3_IADPEHDHTGFLtEyVATR PLCG1_NPGFyVEANPMPTFK
## 9 9
## JAK2_REVGDyGQLHETEVLLK DSP_SAIyQLEEEYENLLK
## 9 9
## CILK1_SKPPYtDyVSTR GAB1_SSGSGSSVADERVDyVVVDQQK
## 9 9
## MAPK1_VADPDHDHTGFLtEyVATR VAV1_VGWFPANYVEEDYSEyC
## 9 9
## HSPE1_VLLPEyGGTK
## 9
# PLSDA pY comp1
k15cl_pY[which(grepl("RET", names(k15cl_pY) )) ]
## RET_ADGTNTGFPRyPNDSVYANWMLSPSAAK
## 2
## RET_DVyEEDSYVK
## 9
## RET_DVYEEDSyVK
## 6
## RET_DVyEEDsYVKR
## 9
## RET_DVyEEDSYVKR
## 9
## RET_DVYEEDSyVKR
## 4
## RET_LyGMSDPNWPGESPVPLTR
## 5
## RET_RDyLDLAASTPSDSLIYDDGLSEEETPLVDCNNAPLPR
## 6
## RET_RRDyLDLAAsTPSDSLIYDDGLSEEETPLVDCNNAPLPR
## 8
## RET_RRDyLDLAASTPSDSLIYDDGLsEEETPLVDCNNAPLPR
## 8
## RET_RRDyLDLAASTPSDSLIYDDGLSEEETPLVDCNNAPLPR
## 6
## RET_VGPGyLGSGGSR
## 11
## RET_YPNDSVyANWMLSPSAAK
## 15
Plot_Profiles_SOM_clusters(som.model = som.model.pept.pY,
clusters = cluster.tries.pept.pY$som.cluster.h.5,
phos_mat = pY_mat_Set2)
## `summarise()` has grouped output by 'sample'. You can override using the
## `.groups` argument.
Plot_Profiles_SOM_Clusters_Splitbyday(som.model = som.model.pept.pY,
clusters = cluster.tries.pept.pY$som.cluster.h.5,
phos_mat = pY_mat_Set2)
## `summarise()` has grouped output by 'treatment', 'day', 'sample'. You can
## override using the `.groups` argument.
h5cl_pY <- Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.h.5)
message("Cluster 1")
## Cluster 1
names(h5cl_pY[h5cl_pY == 1])
## [1] "ENO1_AAVPSGASTGIyEALELRDNDK"
## [2] "ACTR3_AEPEDHyFLLTEPPLNTPENR"
## [3] "DSP_AESGPDLRyEVTSGGGGTSR"
## [4] "WDR1_AHDGGIyAISWSPDSTHLLSASGDK"
## [5] "MYH9_ALELDSNLyR"
## [6] "NCOA4_ANEPCTSFAECVCDENCEKEALyK"
## [7] "PFKL_CHDyYTTEFLYNLYSSEGK"
## [8] "PSMB5_DAySGGAVNLYHVR"
## [9] "PSMB5_DAYSGGAVNLyHVR"
## [10] "SRL_DIVEDPDKFyIFK"
## [11] "FLNB_DLDIIDNYDySHTVK"
## [12] "LDHA_DQLIyNLLKEEQTPQNK"
## [13] "PIK3R1_DQyLMWLTQK"
## [14] "CRK_DSSTSPGDyVLSVSENSR"
## [15] "ARPC3_DTDIVDEAIyYFK"
## [16] "RPS12_DVIEEyFK"
## [17] "PARD3_DVTIGGSAPIyVK"
## [18] "DLG1_DyHFVTSR"
## [19] "PRKCD_DySNFDQEFLNEK"
## [20] "AGL_EAMSAyNSHEEGR"
## [21] "ATP5F1A_EAYPGDVFyLHSR"
## [22] "PIK3C2B_ENTHEATyIQR"
## [23] "MYH1_ESIFCIQyNVR"
## [24] "ARPC3_ETKDTDIVDEAIyYFK"
## [25] "ELMO2_EVCDGWSLPNPEyYTLR"
## [26] "DCBLD2_EVTTVLQADSAEyAQPLVGGIVGTLHQR"
## [27] "SND1_EyGMIYLGK"
## [28] "VIM_FANyIDK"
## [29] "EPHB2_FLEDDTSDPTyTSALGGK"
## [30] "GSTP1_FQDGDLTLyQSNTILR"
## [31] "SLC38A2_FSISPDEDSSSySSNSDFNYSYPTK"
## [32] "BCR_GHGQPGADAEKPFyVNVEFHHER"
## [33] "MAPK7_GLCTSPAEHQYFMTEyVATR"
## [34] "ENO2_GNPTVEVDLyTAK"
## [35] "RPL13A_GPyHFR"
## [36] "PTBP1_GQPIyIQFSNHK"
## [37] "DSP_GVITDQNSDGyCQTGTMSR"
## [38] "RNPS1_GyAYVEFENPDEAEK"
## [39] "MAPK13_HADAEMTGyVVTR"
## [40] "CCT8_HFSGLEEAVyR"
## [41] "RASSF1_HGQVyLR"
## [42] "JUP_HVAAGTQQPyTDGVR"
## [43] "PITPNA_HVEAVyIDIADR"
## [44] "C11orf52_HVHLENATEyATLR"
## [45] "BPGM_HyGALIGLNR"
## [46] "MAPK3_IADPEHDHTGFLTEyVATR"
## [47] "PGM1_IALyETPTGWK"
## [48] "TTN_IDQLQEGCSYyFR"
## [49] "MAGI1_IEDPVyGIYYVDHINR"
## [50] "CDK1_IEKIGEGTyGVVYK"
## [51] "CDK5_IGEGTyGTVFK"
## [52] "HSPD1_IQEIIEQLDVTTSEyEKEK"
## [53] "PTPN11_IQNTGDyYDLYGGEK"
## [54] "TARS1_IyGISFPDPK"
## [55] "SKAP2_IyQFTAASPK"
## [56] "PACS1_IySLSSQPIDHEGIK"
## [57] "PKM_IyVDDGLISLQVK"
## [58] "DOCK4_KEyAMVDPEDISITELYR"
## [59] "PSMB8_KGPGLyYVDEHGTR"
## [60] "PHB1_KLEAAEDIAyQLSR"
## [61] "PIK3CB_KQPYyYPPFDK"
## [62] "POTEJ_LCyVALDFEQEMAMVASSSSLEK"
## [63] "TAX1BP1_LELAEVQDNyK"
## [64] "TAX1BP1_LELAEVQDNyKELK"
## [65] "KRT10_LENEIQTyR"
## [66] "ABL1_LGGGQYGEVyEGVWKK"
## [67] "ITSN2_LIyLVPEK"
## [68] "TYK2_LLAQAEGEPCyIR"
## [69] "NCOA4_LLFQSyNVNDWLVK"
## [70] "JUP_LNyGIPAIVK"
## [71] "PIK3R3_LQEYHSQyQEK"
## [72] "PEBP1_LyEQLSGK"
## [73] "DYRK3_LYTyIQSR"
## [74] "HDLBP_MDyVEINIDHK"
## [75] "PREP_MTELyDYPK"
## [76] "CTNNB1_NEGVATyAAAVLFR"
## [77] "GOT2_NLDKEyLPIGGLAEFCK"
## [78] "LCK_NLDNGGFyISPR"
## [79] "CDKL5_NLSEGNNANYTEyVATR"
## [80] "PTPRC_NRyVDILPYDYNR"
## [81] "INPPL1_NSFNNPAyYVLEGVPHQLLPPEPPSPAR"
## [82] "CASKIN2_NTyNQTALDIVNQFTTSQASR"
## [83] "CTNNA1_NVPILyTASQACLQHPDVAAYK"
## [84] "KIAA1217_NVyYELNDVR"
## [85] "MAPK11_QADEEMTGyVATR"
## [86] "CKS2_QIyYSDKYFDEHYEYR"
## [87] "FRK_QLLySENK"
## [88] "PSMB5_RGPGLyYVDSEGNR"
## [89] "DSP_RGVITDQNSDGyCQTGTMSR"
## [90] "PRKCD_RsDSASSEPVGIyQGFEK"
## [91] "PRKCD_RSDsASSEPVGIyQGFEK"
## [92] "PRKCD_RSDSASSEPVGIyQGFEK"
## [93] "PRKCD_RSDSASSEPVGIyQGFEKK"
## [94] "ARHGEF5_RTEELIyLSQK"
## [95] "PRKCD_sDSASSEPVGIyQGFEK"
## [96] "PRKCD_SDsASSEPVGIyQGFEK"
## [97] "PRKCD_SDSASSEPVGIyQGFEK"
## [98] "PRKCD_SDSASSEPVGIyQGFEKK"
## [99] "IDH1_SDyLNTFEFMDK"
## [100] "RPA1_SENLGQGDKPDyFSSVATVVYLR"
## [101] "MPZL1_SESVVyADIR"
## [102] "SRSF1_SHEGETAyIR"
## [103] "SRSF9_SHEGETSyIR"
## [104] "AFAP1L2_SLETSSyLNVLVNSQWK"
## [105] "MPZL1_SLPSGSHQGPVIyAQLDHSGGHHSDK"
## [106] "ANXA6_SLySMIK"
## [107] "C11orf52_SPGLMSEDSNLHyADIQVCSRPHAR"
## [108] "PIK3R2_SREyDQLYEEYTR"
## [109] "GSDMD_SRGDNVyVVTEVLQTQK"
## [110] "AFAP1L2_SSSSDEEyIYMNK"
## [111] "AFAP1L2_SSSSDEEYIyMNK"
## [112] "IRS2_SYKAPYTCGGDSDQyVLMSSPVGR"
## [113] "GDI2_TDDYLDQPCyETINR"
## [114] "ARHGEF5_TEELIyLSQK"
## [115] "FLNA_THEAEIVEGENHTyCIR"
## [116] "PRPF4B_TILKLCDFGSASHVADNDITPyLVSR"
## [117] "CRKL_TLyDFPGNDAEDLPFKK"
## [118] "ARPC1B_TQIAICPNNHEVHIyEK"
## [119] "SPTBN1_TQILAASyELHK"
## [120] "PIK3R1_TRDQyLMWLTQK"
## [121] "CLTC_TSIDAyDNFDNISLAQR"
## [122] "GARS1_TSyGWIEIVGCADR"
## [123] "ACLY_TTDGVyEGVAIGGDRYPGSTFMDHVLR"
## [124] "HIPK3_TVCSTyLQSR"
## [125] "TTN_VDQLQEGCSYyFR"
## [126] "MAP4K5_VGSGTyGDVYK"
## [127] "WASL_VIyDFIEK"
## [128] "FGFR4_VLLAVSEEyLDLR"
## [129] "PSMB4_VNNSTMLGASGDyADFQYLK"
## [130] "G6PD_VQPNEAVyTK"
## [131] "HGS_VVQDTyQIMK"
## [132] "LCP1_VyALPEDLVEVNPK"
## [133] "ARHGEF5_VYLPYVTNQTyQER"
## [134] "TNS3_WDsYENLSADGEVLHTQGPVDGSLyAK"
## [135] "MYO1E_WTPIEyFNNK"
## [136] "ADSL_yASPEMCFVFSDR"
## [137] "KRT8_yEELQSLAGK"
## [138] "DSP_yGDGIQLTR"
## [139] "MYBPC1_yIFEHK"
## [140] "PTK2_yMEDSTYYK"
## [141] "PTK2_YMEDSTyYK"
## [142] "TRIOBP_YQDVyVELSHIK"
## [143] "AFDN_YSLyEVHVSGER"
## [144] "MEMO1_YSYYDESQGEIyR"
## [145] "RPSA_yVDIAIPCNNK"
message("Cluster 2")
## Cluster 2
names(h5cl_pY[h5cl_pY == 2])
## [1] "RPSA_ADHQPLTEASyVNLPTIALCNTDSPLR"
## [2] "DCBLD2_AGKPGLPAPDELVyQVPQSTQEVSGAGR"
## [3] "PRAG1_EATQPEPIyAESTK"
## [4] "PIK3R2_EYDQLyEEYTR"
## [5] "GAB1_GDKQVEyLDLDLDSGK"
## [6] "MAGI1_IEDPVyGIYYVDHINRK"
## [7] "PLCG1_IGTAEPDyGALYEGR"
## [8] "NCK1_LyDLNMPAYVK"
## [9] "ARHGAP35_NEEENIySVPHDSTQGK"
## [10] "SF3B4_NQDATVyVGGLDEK"
## [11] "HCK_NRPEERPTFEYIQSVLDDFYTATESQyQQQP"
## [12] "RET_RRDyLDLAAsTPSDSLIYDDGLSEEETPLVDCNNAPLPR"
## [13] "RET_RRDyLDLAASTPSDSLIYDDGLsEEETPLVDCNNAPLPR"
## [14] "PKP4_SAVSPDLHITPIyEGR"
## [15] "GAREM1_SELPyEELWLEEGKPSHQPLTR"
## [16] "MTMR10_SGPLEACyGELGQSR"
## [17] "PKP4_STTNyVDFYSTK"
## [18] "LCK_SVLEDFFTATEGQyQPQP"
## [19] "SPRY4_TSHVENDyIDNPSLALTTGPK"
## [20] "FYB1_TTAVEIDyDSLK"
## [21] "GAB1_VDyVVVDQQK"
## [22] "PTPRA_VVQEYIDAFSDyANFK"
## [23] "PTPN11_VyENVGLMQQQK"
## [24] "FRK_WKLEDYFETDSSySDANNFIR"
## [25] "RET_YPNDSVyANWMLSPSAAK"
message("Cluster 3")
## Cluster 3
names(h5cl_pY[h5cl_pY == 3])
## [1] "GAB1_DASSQDCyDIPR" "RET_DVYEEDSyVKR"
## [3] "ARHGEF5_DySTVSASPTALSTLK" "ANKS1A_EEDEHPyELLLTAETK"
## [5] "TJP2_HPDIyAVPIK" "CTNND1_HyEDGYPGGSDNYGSLSR"
## [7] "CTNND1_HYEDGYPGGSDNyGSLSR" "TJP2_IEIAQKHPDIyAVPIK"
## [9] "EPB41L1_IRPGEyEQFESTIGFK" "ROCK2_IyESIEEAK"
## [11] "GAB1_KDASSQDCyDIPR" "PRKCD_KTGVAGEDMQDNSGTyGK"
## [13] "ERBB2_LLDIDETEyHADGGKVPIK" "GAREM1_LSWPNHySGASESQTR"
## [15] "CTNND1_NFHyPPDGYSR" "GAREM1_QWTTITAHSLEEGHyVIGPK"
## [17] "BCAR1_RPGPGTLyDVPR" "GAREM1_SASySLESTDVK"
## [19] "SORBS1_SIyEYQPGK" "CDCP1_SPPESESEPyTFSHPNNGDVSSK"
## [21] "GAREM1_TDTNPSESTPVSCyPCNR" "NEDD9_TGHGYVyEYPSR"
## [23] "PRKCD_TGVAGEDMQDNSGTyGK" "RET_VGPGyLGSGGSR"
## [25] "PTK2B_YIEDEDyYKASVTR" "PLCG1_yQQPFEDFR"
message("Cluster 4")
## Cluster 4
names(h5cl_pY[h5cl_pY == 4])
## [1] "SLC25A5_AAyFGIYDTAK"
## [2] "RET_ADGTNTGFPRyPNDSVYANWMLSPSAAK"
## [3] "ANK3_ADIVQQLLQQGASPNAATTSGyTPLHLSAR"
## [4] "EPS8_ADPPyTHTIQK"
## [5] "PKP3_ADyDTLsLR"
## [6] "PKP3_ADyDTLSLR"
## [7] "KRT8_AEAESMYQIKyEELQSLAGK"
## [8] "ANXA2_AEDGSVIDyELIDQDAR"
## [9] "ANKRD39_AEDPSQPDSAGyTALHYASR"
## [10] "LYN_AEERPTFDYLQSVLDDFyTATEGQYQQQP"
## [11] "LYN_AEERPTFDYLQSVLDDFYTATEGQyQQQP"
## [12] "PKM_AEGSDVANAVLDGADCIMLSGETAKGDyPLEAVR"
## [13] "SRSF3_AFGyYGPLR"
## [14] "GAB2_AGDNSQSVyIPMSPGAHHFDSLGYPSTTLPVHR"
## [15] "WRNIP1_AGEEHyNCISALHK"
## [16] "NEK9_AGGGAAEQEELHyIPIR"
## [17] "SRC_AGPLAGGVTTFVALyDYESR"
## [18] "TNS1_AGSLPNyATINGK"
## [19] "DNM2_AGVyPEKDQAENEDGAQENTFSMDPQLER"
## [20] "TSPAN6_AITNNQyEIV"
## [21] "TMEM192_AKPEPDILEEEKIyAYPSNITSETGFR"
## [22] "H1_ALAAGGyDVEK"
## [23] "CLTC_ALEHFTDLyDIKR"
## [24] "GCHFR_ALGNNFyEYYVDDPPR"
## [25] "LAMTOR1_ALNGAEPNyHSLPSAR"
## [26] "TNK2_ALPQNDDHyVMQEHR"
## [27] "ACAT2_APHLAyLR"
## [28] "AK2_APSVPAAEPEyPK"
## [29] "IRS2_APYTCGGDSDQyVLMSSPVGR"
## [30] "EIF4B_ARPATDSFDDyPPR"
## [31] "IRS2_ASSPAESSPEDSGyMR"
## [32] "DCBLD2_ATGNQPPPLVGTyNTLLSR"
## [33] "RNF20_AVEEQIEyLQK"
## [34] "KIRREL1_AVLyADYR"
## [35] "TYK2_AVPEGHEyYR"
## [36] "GPRC5A_AYSQEEITQGFEETGDTLyAPYSTHFQLQNQPPQK"
## [37] "PSMA6_CDPAGyYCGFK"
## [38] "HSPD1_CEFQDAyVLLSEK"
## [39] "PLCG1_CIELDCWDGPDGMPVIyHGHTLTTK"
## [40] "PFN1_CyEMASHLR"
## [41] "H4C1_DAVTyTEHAK"
## [42] "SHB_DFEDPyNGPGSSLR"
## [43] "SNX18_DGDKLCVVLGPYGPEWQENPyPFQCTIDDPTK"
## [44] "PXN_DGQPYCEKDyHNLFSPR"
## [45] "S100A11_DGyNYTLSK"
## [46] "S100A11_DGYNyTLSK"
## [47] "FAM20B_DHVVEGEPyAGYDR"
## [48] "PIK3C2A_DLVTEDGADPNPyVK"
## [49] "ANXA2_DLyDAGVK"
## [50] "AFAP1L2_DNHLHFyQDR"
## [51] "LSR_DPHyDDFR"
## [52] "PIK3R2_DQyLVWLTQK"
## [53] "AP2B1_DSDyYNMLLK"
## [54] "CCDC88A_DSNPyATLPR"
## [55] "GLUD1_DSNyHLLMSVQESLER"
## [56] "SSBP1_DVAyQYVK"
## [57] "KRT8_DVDEAyMNKVELESR"
## [58] "SLC12A2_DVVVSVEySK"
## [59] "RET_DVYEEDSyVK"
## [60] "KRT18_DWSHyFK"
## [61] "RNF13_DyNIANTV"
## [62] "CLASP2_DYNPyNYSDSISPFNK"
## [63] "KRT19_DYSHyYTTIQDLR"
## [64] "KRT19_DYSHYyTTIQDLR"
## [65] "ITGB4_DySTLTSVSSHDSR"
## [66] "PKM_EAEAAIyHLQLFEELR"
## [67] "SPTBN1_EAVCEVALDyK"
## [68] "DOCK7_EAYTAVVyHNR"
## [69] "TLN2_ECDySIDGINR"
## [70] "LYN_EEPIyIITEYMAK"
## [71] "PLCG1_EHAFVASEyPVILSIEDHCSIAQQR"
## [72] "BAIAP2L1_EIEyVETVTSR"
## [73] "LYN_EKAEERPTFDYLQSVLDDFYTATEGQyQQQP"
## [74] "PGK1_ELNyFAK"
## [75] "DENND2B_ENPyEDVDLK"
## [76] "CLTC_ENPyYDSR"
## [77] "DDR1_EPPPyQEPRPR"
## [78] "MATR3_EPPyRVPR"
## [79] "PDCD6IP_EPSAPSIPTPAyQSSPAGGHAPTPPTPAPR"
## [80] "SHC1_ESTTTPGQyVLTGLQSGQPK"
## [81] "ADAM10_ESyQMGHMR"
## [82] "FAIM_ETFyVGAAK"
## [83] "ADAM9_EVPIyANR"
## [84] "EEPD1_EyIGGFK"
## [85] "NHLRC2_FAGSGNEENRNNAyPHK"
## [86] "APOBEC3F_FDDNyAFLHR"
## [87] "PIN4_FGyHIIMVEGR"
## [88] "CTNND1_FHPEPyGLEDDQR"
## [89] "PDCD6IP_FIQQTYPSGGEEQAQyCR"
## [90] "EPHB3_FLEDDPSDPTyTSSLGGK"
## [91] "EPHB4_FLEENSSDPTyTSSLGGK"
## [92] "NUDT21_FNFIyN"
## [93] "SLC38A2_FSISPDEDSSSYSSNSDFNySYPTK"
## [94] "VPS29_GDFDENLNyPEQK"
## [95] "ORAI1_GDHPLTPGSHyA"
## [96] "PKM_GDyPLEAVR"
## [97] "CNNM3_GGGDPySDLSK"
## [98] "ANXA1_GGPGSAVSPyPTFNPSSDVAALHK"
## [99] "SLC7A11_GGyLQGNVNGR"
## [100] "PTPN11_GHEyTNIK"
## [101] "COPA_GHyNNVSCAVFHPR"
## [102] "MCM2_GLLyDSDEEDEERPAR"
## [103] "PIK3C2B_GLQLLQDGNDPDPyVK"
## [104] "DDR1_GNPPHSAPCVPNGSALLLSNPAyR"
## [105] "CDCP1_GPAVGIyNDNINTEMPR"
## [106] "TNS2_GPLDGSPyAQVQRPPR"
## [107] "AXL_GQTPYPGVENSEIyDYLR"
## [108] "PKP3_GQyHTLQAGFSSR"
## [109] "TJP2_GRSIDQDyER"
## [110] "POF1B_GSHFFPGNNVIyEK"
## [111] "EGFR_GSHQISLDNPDyQQDFFPK"
## [112] "SRSF9_GSPHyFSPFRPY"
## [113] "EGFR_GSTAENAEyLR"
## [114] "ELP3_GTGLyELWK"
## [115] "STAT1_GTGyIKTELISVSEVHPSR"
## [116] "GPRC5C_GVGyETILK"
## [117] "DDX6_GVTQyYAYVTER"
## [118] "EIF2S1_GyIDLSK"
## [119] "HSPD1_GYISPyFINTSK"
## [120] "MDH2_GyLGPEQLPDCLK"
## [121] "PRPF8_GYLPSHyER"
## [122] "DSC2_HAQDyVLTYNYEGR"
## [123] "DSC2_HAQDYVLTyNYEGR"
## [124] "DSC2_HAQDYVLTYNyEGR"
## [125] "ATG101_HEyLPK"
## [126] "RASA1_HFTNPyCNIYLNSVQVAK"
## [127] "FRK_HGHyFVALFDYQAR"
## [128] "BCAR1_HLLAPGPQDIyDVPPVR"
## [129] "ESYT1_HLSPyATLTVGDSSHK"
## [130] "ACTN1_HRPELIDyGK"
## [131] "ILF3_HSSVyPTQEELEAVQNMVSHTER"
## [132] "MAPK14_HTDDEMTGyVATR"
## [133] "ATP5PB_HyLFDVQR"
## [134] "SLC1A5_HyRGPAGDATVASEK"
## [135] "GOT1_IANDNSLNHEyLPILGLAEFR"
## [136] "APRT_IDyIAGLDSR"
## [137] "YTHDC1_IDyPPEFHQRPGYLKDPR"
## [138] "ENO1_IGAEVyHNLK"
## [139] "CDK1_IGEGTYGVVyKGR"
## [140] "NAXD_IGVVGGCQEyTGAPYFAAISALK"
## [141] "KLF5_IHYCDyPGCTK"
## [142] "CRKL_IHyLDTTTLIEPAPR"
## [143] "CRK_IHyLDTTTLIEPVSR"
## [144] "TNK1_ILEHyQWDLSAASR"
## [145] "VCL_ILLRNPGNQAAyEHFETMK"
## [146] "ATP5F1B_IMDPNIVGSEHyDVAR"
## [147] "PIK3R2_IQGEyTLTLR"
## [148] "H4C1_ISGLIyEETR"
## [149] "TUBB_ISVyYNEATGGK"
## [150] "KCT2_ITNDyIF"
## [151] "CLTC_IyIDSNNNPER"
## [152] "PIK3C2B_IyLLPDPQK"
## [153] "SDC4_KAPTNEFyA"
## [154] "DNMT1_KEPVDEDLyPEHYR"
## [155] "PIK3R3_KLQEyHSQYQEK"
## [156] "PIK3CB_KQPyYYPPFDK"
## [157] "TSG101_KTAGLSDLy"
## [158] "MPZL2_KVSVyLEDTD"
## [159] "TXNRD1_KVVYENAyGQFIGPHR"
## [160] "DYRK1A_KVYNDGYDDDNyDYIVK"
## [161] "SGMS2_KYPDyIQIAMPTESR"
## [162] "SLC12A7_LANyTNLSQGVVEHEEDEESR"
## [163] "GFPT1_LATELyHQK"
## [164] "PRPF4B_LCDFGSASHVADNDITPyLVSR"
## [165] "SNX18_LCVVLGPYGPEWQENPyPFQCTIDDPTK"
## [166] "ARHGAP42_LDTASSNGyQRPGSVVAAK"
## [167] "ABL1_LGGGQYGEVyEGVWK"
## [168] "FTL_LGGPEAGLGEyLFER"
## [169] "DSP_LGIyEAMK"
## [170] "DHX9_LGyIHR"
## [171] "VARS1_LHEEGIIyR"
## [172] "PIK3R1_LHEyNTQFQEK"
## [173] "GMDS_LHyGDLTDSTCLVK"
## [174] "CTNNB1_LHyGLPVVVK"
## [175] "DDR1_LLLATyARPPR"
## [176] "PKM_LNFSHGTHEyHAETIK"
## [177] "ACTR3_LPACVVDCGTGyTK"
## [178] "UBA3_LPEHCIEyVR"
## [179] "NAALADL2_LQEESDyITHYTR"
## [180] "EPHB3_LQQyIAPGMK"
## [181] "LMNB1_LREyEAALNSK"
## [182] "CPD_LRQHHDEyEDEIR"
## [183] "PIK3CB_LTIHGKEDEVSPyDYVLQVSGR"
## [184] "DDX17_LTPyEVDELRR"
## [185] "STAM2_LVNEAPVYSVySK"
## [186] "HSP90AB1_LVSSPCCIVTSTyGWTANMER"
## [187] "FRS2_LVyENINGLSIPSASGVR"
## [188] "LYN_LyAVVTR"
## [189] "ANXA5_LYDAyELK"
## [190] "RET_LyGMSDPNWPGESPVPLTR"
## [191] "CPNE1_LyGPTNFAPIINHVAR"
## [192] "CPNE3_LyGPTNFSPIINHVAR"
## [193] "SDCBP_LyPELSQYMGLSLNEEEIR"
## [194] "SDCBP_LYPELSQyMGLSLNEEEIR"
## [195] "PLEC_LyVHEAVK"
## [196] "PIK3R1_MHGDyTLTLR"
## [197] "WRNIP1_MLEGGEDPLyVAR"
## [198] "LAPTM4A_MPEKEPPPPyLPA"
## [199] "RFFL_MQAYSNPGySSFPSPTGLEPSCK"
## [200] "APLP2_MQNHGyENPTYK"
## [201] "APLP2_MQNHGYENPTyK"
## [202] "APP_MQQNGyENPTYK"
## [203] "LDHB_MVVESAyEVIK"
## [204] "CTNNA1_NAGNEQDLGIQyK"
## [205] "KIAA1217_NEGFYADPyLYHEGR"
## [206] "JUP_NEGTATyAAAVLFR"
## [207] "PTPN2_NESHDyPHR"
## [208] "TMEM106B_NGDVSQFPyVEFTGR"
## [209] "PLCG1_NGILYLEDPVNHEWyPHYFVLTSSK"
## [210] "CSPG4_NGQyWV"
## [211] "SNF8_NGyVTVSEIK"
## [212] "LMO7_NHQLYCNDCyLR"
## [213] "NKD1_NHyLDLAGIENYTSQFGPGSPSVAQK"
## [214] "DDR1_NLyAGDyYR"
## [215] "DDR1_NLyAGDYYR"
## [216] "DDR1_NLYAGDyYR"
## [217] "DDR2_NLySGDYYR"
## [218] "PLCG1_NMAQyFK"
## [219] "VCL_NPGNQAAyEHFETMK"
## [220] "GDI2_NPyYGGESASITPLEDLYK"
## [221] "GDI2_NPyYGGESASITPLEDLYKR"
## [222] "DLG1_NTSDFVyLK"
## [223] "LAPTM4A_NVPEIAVYPAFEAPPQyVLPTYEMAVK"
## [224] "OCLN_NVSAGTQDVPSPPSDyVER"
## [225] "SLC4A1AP_NWEDEDFyDSDDDTFLDR"
## [226] "SLC4A1AP_NWEDEDFyDSDDDTFLDRTGLIEK"
## [227] "WDR18_NyISAWELQR"
## [228] "CAPN1_NyPATFWVNPQFK"
## [229] "GRB2_NyVTPVNR"
## [230] "ALDOA_PyQYPALTPEQK"
## [231] "ALDOA_PYQyPALTPEQK"
## [232] "MAPK12_QADSEMTGyVVTR"
## [233] "PDGFRA_QADTTQyVPMLER"
## [234] "TTYH3_QAHDSLyR"
## [235] "KRT18_QAQEyEALLNIK"
## [236] "GJA1_QASEQNWANySAEQNR"
## [237] "TMED7_QCFyEDIAQGTK"
## [238] "ANXA3_QDAQILyK"
## [239] "PKP1_QDPVyIPPISCNK"
## [240] "CTNND1_QDVyGPQPQVR"
## [241] "SYK_QESTVSFNPyEPELAPWAADK"
## [242] "SYK_QESTVSFNPyEPELAPWAADKGPQR"
## [243] "SPTAN1_QGFVPAAyVK"
## [244] "RPTN_QGQSSHyIQSQTGEIQGQNK"
## [245] "CPD_QHHDEyEDEIR"
## [246] "CCT8_QITSYGETCPGLEQyAIKK"
## [247] "NUP93_QIyIYNEK"
## [248] "ACP1_QLIIEDPyYGNDSDFETVYQQCVR"
## [249] "SPTBN1_QNLLSQSHAyQQFLR"
## [250] "FTH1_QNyHQDSEAAINR"
## [251] "PLEC_QQGLASyDYVR"
## [252] "MYH9_QRyEILTPNSIPK"
## [253] "EPHA2_QSPEDVyFSK"
## [254] "DPEP1_QTDSLVMVNFyNNYISCTNK"
## [255] "DPEP1_QTDSLVMVNFYNNyISCTNK"
## [256] "MPZ_QTPVLyAMLDHSR"
## [257] "HSPA8_QTQTFTTySDNQPGVLIQVYEGER"
## [258] "SAPCD2_QVAPASGyLTFER"
## [259] "CAP1_QVAYIyK"
## [260] "LDHA_QVVESAyEVIK"
## [261] "ANXA2_RAEDGSVIDyELIDQDAR"
## [262] "RET_RDyLDLAASTPSDSLIYDDGLSEEETPLVDCNNAPLPR"
## [263] "PQBP1_REELAPyPK"
## [264] "MCM2_RGLLyDSDEEDEERPAR"
## [265] "BRK1_RIEyIEAR"
## [266] "RET_RRDyLDLAASTPSDSLIYDDGLSEEETPLVDCNNAPLPR"
## [267] "CLDN4_SAAASNyV"
## [268] "DCP1A_SASPyHGFTIVNR"
## [269] "ITPA_SAyALCTFALSTGDPSQPVR"
## [270] "CX3CL1_SCGSNSyVLVPV"
## [271] "ENO1_SFIKDyPVVSIEDPFDQDDWGAWQK"
## [272] "VCL_SFLDSGyR"
## [273] "UMPS_SGLSSPIyIDLR"
## [274] "SLC38A2_SHyADVDPENQNFLLESNLGK"
## [275] "SLC38A2_SHyADVDPENQNFLLESNLGKK"
## [276] "MRPL58_SIYSLDKLyPESQGSDTAWR"
## [277] "CILK1_SKPPYTDyVSTR"
## [278] "LYN_SLDNGGyYISPR"
## [279] "LYN_SLDNGGYyISPR"
## [280] "ERBB3_SLEATDSAFDNPDyWHSR"
## [281] "ANXA11_SLyHDISGDTSGDYR"
## [282] "ANXA4_SLySFIK"
## [283] "FLNA_SPFEVyVDK"
## [284] "EPHB4_SQAKPGTPGGTGGPAPQy"
## [285] "PTBP3_SQPVyIQYSNHR"
## [286] "CTNND1_SQSSHSyDDSTLPLIDR"
## [287] "LSR_SRDDLyDQDDSRDFPR"
## [288] "TSPAN3_SRDPAyELLITGGTYA"
## [289] "GPRC5C_SSPEQSyQGDMYPTR"
## [290] "LSR_SSSAGGQGSyVPLLR"
## [291] "KRT18_STFSTNyR"
## [292] "CAPZB_STLNEIyFGK"
## [293] "AGPS_SVKEyVDPNNIFGNR"
## [294] "CLTC_SVNESLNNLFITEEDyQALR"
## [295] "TXNRD1_SYDyDLIIIGGGSGGLAAAK"
## [296] "MAPK9_TACTNFMMTPyVVTR"
## [297] "EFNB2_TADSVFCPHyEK"
## [298] "TSG101_TAGLSDLy"
## [299] "VDAC1_TDEFQLHTNVNDGTEFGGSIyQK"
## [300] "DCBLD2_TEGTyDLPYWDR"
## [301] "PRMT1_TGFSTSPESPyTHWK"
## [302] "PTK2_THAVSVSETDDyAEIIDEEDTYTMPSTR"
## [303] "NUDT21_TINLyPLTNYTFGTK"
## [304] "NUDT5_TLHyECIVLVK"
## [305] "OSTF1_TLSNAEDyLDDEDSD"
## [306] "NIT2_TLSPGDSFSTFDTPyCR"
## [307] "CRKL_TLyDFPGNDAEDLPFK"
## [308] "H4C1_TLyGFGG"
## [309] "TLN1_TMQFEPSTMVyDACR"
## [310] "KIRREL1_TPyEAYDPIGK"
## [311] "KIRREL1_TPYEAyDPIGK"
## [312] "CXADR_TQyNQVPSEDFER"
## [313] "C8orf82_TREyFYYVDHQGQLFLDDSK"
## [314] "LDLR_TTEDEVHICHNQDGySYPSR"
## [315] "EFNB1_TTENNyCPHYEK"
## [316] "EFNB1_TTENNYCPHyEK"
## [317] "SSH2_TTNPFyNTM"
## [318] "PSMB6_TTTGSyIANR"
## [319] "EPHB3_TVPDyTTFTTVGDWLDAIK"
## [320] "H4C1_TVTAMDVVyALKR"
## [321] "EPHA4_TyVDPFTYEDPNQAVR"
## [322] "EPHA2_TyVDPHTYEDPNQAVLK"
## [323] "EPHA2_TYVDPHTyEDPNQAVLK"
## [324] "MAPK1_VADPDHDHTGFLTEyVATR"
## [325] "ITGB4_VCAYGAQGEGPySSLVSCR"
## [326] "HGS_VCEPCyEQLNR"
## [327] "SDCBP_VDKVIQAQTAFSANPANPAILSEASAPIPHDGNLyPR"
## [328] "SEC62_VDyFIASK"
## [329] "CALM1_VFDKDGNGyISAAELR"
## [330] "EFHD2_VFNPyTEFK"
## [331] "HBA1_VGAHAGEyGAEALER"
## [332] "LLGL1_VGCFDPySDDPR"
## [333] "PXN_VGEEEHVySFPNK"
## [334] "G6PD_VGFQyEGTYK"
## [335] "CRYZ_VHACGVNPVETyIR"
## [336] "FGFRL1_VHQHIHyQC"
## [337] "DCTN2_VHQLyETIQR"
## [338] "FLNA_VHSPSGALEECyVTEIDQDKYAVR"
## [339] "FLNA_VHSPSGALEECYVTEIDQDKyAVR"
## [340] "SDCBP_VIQAQTAFSANPANPAILSEASAPIPHDGNLyPR"
## [341] "DSG2_VIQPHGGGSNPLEGTQHLQDVPyVMVR"
## [342] "EPHA2_VLEDDPEATyTTSGGK"
## [343] "EPHA2_VLEDDPEATyTTSGGKIPIR"
## [344] "GDI2_VLHMDRNPyYGGESASITPLEDLYK"
## [345] "LSR_VLyYMEK"
## [346] "PEAK1_VPIVINPNAyDNLAIYK"
## [347] "GPRC5C_VPsEGAyDIILPR"
## [348] "GPRC5C_VPSEGAyDIILPR"
## [349] "ITGB4_VPSVELTNLYPyCDYEMK"
## [350] "FER_VQENDGKEPPPVVNyEEDAR"
## [351] "EPS8L1_VRDPAGQEGYVPyNILTPYPGPR"
## [352] "MPZL2_VSVyLEDTD"
## [353] "ALDH9A1_VTIEyYSQLK"
## [354] "ATIC_VVACNLyPFVK"
## [355] "NUCKS1_VVDYSQFQESDDADEDyGR"
## [356] "DDX1_VWyHVCSSR"
## [357] "DSG2_VyAPASTLVDQPYANEGTVVVTER"
## [358] "DSG2_VYAPASTLVDQPyANEGTVVVTER"
## [359] "SOCS6_VyDSVQSSGPMVVTSLTEELKK"
## [360] "FLNA_VyGPGVAK"
## [361] "PIK3R2_VyHQQYQDK"
## [362] "DSC2_VyLCNQDENHK"
## [363] "DSC2_VYLCNQDENHKHAQDyVLTYNYEGR"
## [364] "DYRK1A_VYNDGYDDDNyDYIVK"
## [365] "EPS8L1_VySQVTVQR"
## [366] "CDK1_VyTHEVVTLWYR"
## [367] "VDAC2_WCEyGLTFTEK"
## [368] "ITGB1_WDTGENPIyK"
## [369] "EPHA2_WTAPEAISyR"
## [370] "VDAC1_WTEyGLTFTEK"
## [371] "SERINC5_yAAPELEIAR"
## [372] "PDGFRB_YADIESSNYMAPYDNyVPSAPER"
## [373] "S100A11_YAGKDGyNYTLSK"
## [374] "VTA1_yAGSALQYEDVSTAVQNLQK"
## [375] "WDR1_YAPSGFyIASGDVSGK"
## [376] "TNK2_yATPQVIQAPGPR"
## [377] "TTYH2_yENVPLIGR"
## [378] "CORO1C_YFEITDESPyVHYLNTFSSK"
## [379] "PDGFRB_YGDLVDyLHR"
## [380] "HNRNPA2B1_yHTINGHNAEVR"
## [381] "MCAM_yIDLRH"
## [382] "PTPN11_yKNILPFDHTR"
## [383] "PSMA6_yKYGYEIPVDMLCK"
## [384] "YWHAE_yLAEFATGNDR"
## [385] "YWHAZ_yLAEVAAGDDKK"
## [386] "YWHAQ_yLAEVACGDDR"
## [387] "YWHAG_yLAEVATGEK"
## [388] "TTYH3_yLATSQPRPDSSGSH"
## [389] "TOP2A_yLEESDEDDLF"
## [390] "APLP2_yLEQMQI"
## [391] "USP14_yLFTGLK"
## [392] "EPHB3_YLSEMNyVHR"
## [393] "YWHAB_yLSEVASGDNK"
## [394] "PTK2_YMEDSTyYKASK"
## [395] "LCP1_yPALHKPENQDIDWGALEGETR"
## [396] "ATP5PD_yPYWPHQPIENL"
## [397] "PDGFRB_yQQVDEEFLR"
## [398] "YES1_YRPENTPEPVSTSVSHyGAEPTTVSPCPSSSAK"
## [399] "ADGRE5_ySEFTSTTSGTGHNQTR"
## [400] "PKP3_YSLVSEQLEPAATSTyR"
## [401] "ACTR3_ySYVCPDLVK"
## [402] "RACK1_yTVQDESHSEWVSCVR"
## [403] "CAV1_yVDSEGHLYTVPIR"
## [404] "CAV1_YVDSEGHLyTVPIR"
## [405] "AXL_yVLCPSTTPSPAQPADR"
## [406] "TEC_YVLDDQyTSSSGAK"
## [407] "PTPRA_yVNILPYDHSR"
## [408] "LHPP_yYKETSGLMLDVGPYMK"
## [409] "TARBP1_YyVNSLQHR"
## [410] "NDUFB10_YyYYHR"
message("Cluster 5")
## Cluster 5
names(h5cl_pY[h5cl_pY == 5])
## [1] "PLCG1_ACyRDMSSFPETK" "NCOA4_ANEPCTsFAECVCDENCEKEALyK"
## [3] "GRB2_DIEQVPQQPTyVQALFDFDPQEDGELGFR" "RET_DVyEEDSYVK"
## [5] "RET_DVyEEDsYVKR" "RET_DVyEEDSYVKR"
## [7] "RIN1_EKPAQDPLyDVPNASGGQAGGPQRPGR" "SHC1_ELFDDPSyVNVQNLDK"
## [9] "JAK2_EVGDyGQLHETEVLLK" "PIK3R2_EYDQLYEEyTR"
## [11] "PGAM1_FSGWyDADLSPAGHEEAK" "PGAM1_FSGWyDADLSPAGHEEAKR"
## [13] "MAPK3_IADPEHDHTGFLtEyVATR" "PLCG1_NPGFyVEANPMPTFK"
## [15] "JAK2_REVGDyGQLHETEVLLK" "DSP_SAIyQLEEEYENLLK"
## [17] "CILK1_SKPPYtDyVSTR" "GAB1_SSGSGSSVADERVDyVVVDQQK"
## [19] "MAPK1_VADPDHDHTGFLtEyVATR" "VAV1_VGWFPANYVEEDYSEyC"
## [21] "HSPE1_VLLPEyGGTK"
som.pat <- Train_SOM(phos_mat= pY_mat_Set2, try.k = 2:15)
som.model.pat <- som.pat[[1]]
som.events.pat <- som.pat[[2]]
## Having selected a reasonable value for k, evaluate different clustering algorithms.
## Define a function for make a simple plot of clustering output.
## This is the same as previousl plotting, but we define the function
## here as we wanted to play with the color earlier.
## Try several different clustering algorithms, and, if desired, different values for k
cluster.tries.pat.pY <- list()
for(k in c(5,6,7)){
message(paste(k, "clusters"))
## k-means clustering
som.cluster.k <- kmeans(som.events.pat, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
## hierarchical clustering
som.dist.pat <- dist(som.events.pat) # hierarchical, step 1
som.cluster.h <- cutree(hclust(som.dist.pat), k = k) # hierarchical, step 2
## capture outputs
cluster.tries.pat.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
cluster.tries.pat.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}
## 5 clusters
## 6 clusters
## 7 clusters
## Take a look at the various clusters. You're looking for the algorithm that produces the
## least fragmented clusters.
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.7)
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 4 2
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 4 2
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 3 5
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 1 5
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 4 3
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 1 2
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 4 2
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 5 2
## log2FC_Xenograft_EBC_5d_5_Set2
## 5
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 4 5
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 4 5
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 3 6
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 1 6
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 4 3
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 1 2
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 4 5
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 6 2
## log2FC_Xenograft_EBC_5d_5_Set2
## 6
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.7)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 4 6
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 5 6
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 3 7
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 1 7
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 4 3
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 1 2
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 4 6
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 7 2
## log2FC_Xenograft_EBC_5d_5_Set2
## 7
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.5)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
## ctrl 0 2 0 1 0
## E 1 1 2 0 0
## EBC 0 0 0 1 4
## EC 1 2 0 2 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.6)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
## ctrl 0 0 0 1 2 0
## E 1 1 2 0 0 0
## EBC 0 0 0 1 0 4
## EC 1 1 0 2 1 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.7)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6 7
## ctrl 0 0 0 1 0 2 0
## E 1 1 2 0 0 0 0
## EBC 0 0 0 1 0 0 4
## EC 1 1 0 1 1 1 0
Confusion_Matrix_Prep(cluster.tries.pat.pY$som.cluster.h.5)
## prep
## Asign_To_Clusters(som.model.pat, cluster) prep1 prep2
## 1 0 2
## 2 0 5
## 3 0 2
## 4 1 3
## 5 0 4
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5, cl=7)
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6, cl=7)
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.7, cl=7)
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 3 5
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 2 3
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 4 1
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 2 1
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 3 4
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 2 5
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 3 3
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 1 5
## log2FC_Xenograft_EBC_5d_5_Set2
## 1
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 4 2
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 1 2
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 5 3
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 1 3
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 4 5
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 1 6
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 4 2
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 3 6
## log2FC_Xenograft_EBC_5d_5_Set2
## 3
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.7)
## log2FC_Xenograft_EBC_5d_4_Set2 log2FC_Xenograft_ctrl_5d_7_Set2
## 6 5
## log2FC_Xenograft_EC_5d_3_Set2 log2FC_Xenograft_ctrl_5d_5_Set2
## 1 5
## log2FC_Xenograft_E_5d_2_Set2 log2FC_Xenograft_EBC_5d_3_Set2
## 2 7
## log2FC_Xenograft_E_5d_3_Set2 log2FC_Xenograft_EBC_5d_2_Set2
## 4 7
## log2FC_Xenograft_ctrl_5d_3_Set2 log2FC_Xenograft_E_5d_4_Set2
## 6 2
## log2FC_Xenograft_EC_5d_4_Set2 log2FC_Xenograft_E_5d_5_Set2
## 4 3
## log2FC_Xenograft_EC_5d_2_Set2 log2FC_Xenograft_EC_5d_1_Set2
## 6 5
## log2FC_Xenograft_EBC_5d_1_Set2 log2FC_Xenograft_EC_5d_5_Set2
## 7 3
## log2FC_Xenograft_EBC_5d_5_Set2
## 7
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.5)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
## ctrl 0 0 2 0 1
## E 0 1 0 2 1
## EBC 4 0 1 0 0
## EC 0 2 2 0 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.6)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
## ctrl 0 2 0 1 0 0
## E 1 0 0 0 2 1
## EBC 0 0 4 1 0 0
## EC 2 1 0 1 0 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.7)
## Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6 7
## ctrl 0 0 0 0 2 1 0
## E 0 2 1 1 0 0 0
## EBC 0 0 0 0 0 1 4
## EC 1 0 1 1 1 1 0
sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur/Monterey 10.16
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] forcats_0.5.2 stringr_1.4.1
## [3] dplyr_1.0.10 purrr_0.3.5
## [5] readr_2.1.3 tidyr_1.2.1
## [7] tibble_3.1.8 ggplot2_3.3.6
## [9] tidyverse_1.3.2 kohonen_3.0.11
## [11] mdatools_0.13.0 SummarizedExperiment_1.24.0
## [13] GenomicRanges_1.46.1 GenomeInfoDb_1.30.1
## [15] MatrixGenerics_1.6.0 matrixStats_0.62.0
## [17] DEP_1.16.0 org.Hs.eg.db_3.14.0
## [19] AnnotationDbi_1.56.2 IRanges_2.28.0
## [21] S4Vectors_0.32.4 Biobase_2.54.0
## [23] BiocGenerics_0.40.0 fgsea_1.20.0
##
## loaded via a namespace (and not attached):
## [1] utf8_1.2.2 shinydashboard_0.7.2 proto_1.0.0
## [4] gmm_1.7 tidyselect_1.2.0 RSQLite_2.2.18
## [7] htmlwidgets_1.5.4 grid_4.1.3 BiocParallel_1.28.3
## [10] norm_1.0-10.0 munsell_0.5.0 codetools_0.2-18
## [13] preprocessCore_1.56.0 chron_2.3-58 DT_0.26
## [16] withr_2.5.0 colorspace_2.0-3 highr_0.9
## [19] knitr_1.40 rstudioapi_0.14 ggsignif_0.6.4
## [22] mzID_1.32.0 labeling_0.4.2 GenomeInfoDbData_1.2.7
## [25] farver_2.1.1 bit64_4.0.5 vctrs_0.5.0
## [28] generics_0.1.3 xfun_0.34 R6_2.5.1
## [31] doParallel_1.0.17 ggbeeswarm_0.6.0 clue_0.3-62
## [34] MsCoreUtils_1.6.2 bitops_1.0-7 cachem_1.0.6
## [37] DelayedArray_0.20.0 assertthat_0.2.1 promises_1.2.0.1
## [40] scales_1.2.1 googlesheets4_1.0.1 beeswarm_0.4.0
## [43] gtable_0.3.1 affy_1.72.0 sandwich_3.0-2
## [46] rlang_1.0.6 mzR_2.28.0 GlobalOptions_0.1.2
## [49] splines_4.1.3 rstatix_0.7.0 gargle_1.2.1
## [52] impute_1.68.0 broom_1.0.1 abind_1.4-5
## [55] BiocManager_1.30.19 yaml_2.3.6 modelr_0.1.9
## [58] backports_1.4.1 httpuv_1.6.6 tools_4.1.3
## [61] affyio_1.64.0 ellipsis_0.3.2 gplots_3.1.3
## [64] jquerylib_0.1.4 RColorBrewer_1.1-3 STRINGdb_2.6.5
## [67] MSnbase_2.20.4 gsubfn_0.7 Rcpp_1.0.9
## [70] hash_2.2.6.2 plyr_1.8.7 zlibbioc_1.40.0
## [73] RCurl_1.98-1.9 ggpubr_0.4.0 sqldf_0.4-11
## [76] GetoptLong_1.0.5 zoo_1.8-11 haven_2.5.1
## [79] cluster_2.1.4 fs_1.5.2 magrittr_2.0.3
## [82] data.table_1.14.4 circlize_0.4.15 reprex_2.0.2
## [85] googledrive_2.0.0 pcaMethods_1.86.0 mvtnorm_1.1-3
## [88] ProtGenerics_1.26.0 hms_1.1.2 mime_0.12
## [91] evaluate_0.17 xtable_1.8-4 XML_3.99-0.12
## [94] readxl_1.4.1 gridExtra_2.3 shape_1.4.6
## [97] compiler_4.1.3 KernSmooth_2.23-20 ncdf4_1.19
## [100] crayon_1.5.2 htmltools_0.5.3 mgcv_1.8-41
## [103] later_1.3.0 tzdb_0.3.0 lubridate_1.8.0
## [106] DBI_1.1.3 dbplyr_2.2.1 ComplexHeatmap_2.10.0
## [109] MASS_7.3-58.1 tmvtnorm_1.5 car_3.1-1
## [112] Matrix_1.5-1 permute_0.9-7 cli_3.4.1
## [115] vsn_3.62.0 imputeLCMD_2.1 parallel_4.1.3
## [118] igraph_1.3.5 pkgconfig_2.0.3 MALDIquant_1.21
## [121] xml2_1.3.3 foreach_1.5.2 vipor_0.4.5
## [124] bslib_0.4.0 XVector_0.34.0 rvest_1.0.3
## [127] digest_0.6.30 vegan_2.6-4 Biostrings_2.62.0
## [130] rmarkdown_2.17 cellranger_1.1.0 fastmatch_1.1-3
## [133] shiny_1.7.3 gtools_3.9.3 rjson_0.2.21
## [136] lifecycle_1.0.3 nlme_3.1-160 jsonlite_1.8.3
## [139] carData_3.0-5 limma_3.50.3 fansi_1.0.3
## [142] pillar_1.8.1 lattice_0.20-45 KEGGREST_1.34.0
## [145] fastmap_1.1.0 httr_1.4.4 plotrix_3.8-2
## [148] glue_1.6.2 png_0.1-7 iterators_1.0.14
## [151] bit_4.0.4 stringi_1.7.8 sass_0.4.2
## [154] blob_1.2.3 caTools_1.18.2 memoise_2.0.1
knitr::knit_exit()